package com.zjsru.plan2024.oneday;

/**
 * 3206. 交替组 I
 *
 * @Author: cookLee
 * @Date: 2024-11-27
 */
public class NumberOfAlternatingGroups {

    /**
     * 主
     * \
     * 输入：colors = [1,1,1]
     * <p>
     * 输出：0
     * \
     * 输入：colors = [0,1,0,0,1]
     * <p>
     * 输出：3
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        NumberOfAlternatingGroups numberOfAlternatingGroups = new NumberOfAlternatingGroups();
        System.out.println(numberOfAlternatingGroups.numberOfAlternatingGroups(new int[]{0, 1, 0, 1, 0}));
    }

    public int numberOfAlternatingGroups(int[] colors) {
        int len = colors.length;
        int ans = 0;
        for (int i = 0; i < len; i++) {
            //限定了连续三块，即考虑上一块和下一块
            //组成环，用(i - 1 + len) % len表示下标
            if (colors[i] != colors[(i - 1 + len) % len] && colors[i] != colors[(i + 1 + len) % len]) {
                ans++;
            }
        }
        return ans;
    }

    /**
     * 复制数组
     *
     * @param colors 颜色
     * @return int
     */
    public int numberOfAlternatingGroups2(int[] colors) {
        int len = colors.length;
        int[] extendedColors = new int[2 * len];
        // 复制数组
        System.arraycopy(colors, 0, extendedColors, 0, len);
        System.arraycopy(colors, 0, extendedColors, len, len);
        int ans = 0;
        for (int i = 1; i <= len; i++) {
            if (extendedColors[i] != extendedColors[i - 1] && extendedColors[i] != extendedColors[i + 1]) {
                ans++;
            }
        }
        return ans;
    }

}
